–€€MàLé} ¬­ X­¬®ð c0¬±C)HÈCð±CH Mh¨hÝ©À h ¨`­eC¨¥Di„C…DŒ` Œ  ©R­y„H©PŒ©€Êð ® Ð® à *  1ŒÆH0®芢@)Т€Ž Yäˆ0æ¦.Ș`ÿi í#(PMRÒÒÒÒÒÒÒ\ \b Æ Pg©i»©¼¢Ž ¶ ½Ë0 š ð  ¹% ™ˆ÷½ËÉ@°¼Ã / ÊÐÕ ®Š™`ˆÐúîd­ ç¬ ¢ì Þè0˜øÈÊîŒèèèè½ðÉDÐô©D©Ô©LŒÿ qq 130XE+ Makro-Assembler, Version 2.1 =================================== } Copyright (c) 1992 by Torsten Karwoth ------------------------------------- Dieses }Programm läuft nur auf Rechnern der Atari XL/XE-Serie und benötigt eine RAMDisk von mindestens 64KB. Diese Version sollte} nur mit MyDOS be- nutzt werden (wurde mit anderen DOS-Versionen nicht "härtegetestet"). Das Copyright für den 130XE+} Makro-Assembler liegt bei mir, Torsten Karwoth. Trotzdem erlaube ich hiermit die Weitergabe dieses Programmes aussc }hließlich auf der Installationsdiskette, sofern folgende Bedingungen erfüllt werden, sonst darf das Programm nicht kopiert } werden: 1) Alle Dateien, auch Texte, welche sich auf der Installationsdiskette be- finden, dürfen nicht verändert od }er entfernt werden. Dies gilt insbe- sonders für die Copyright-Notizen im Programm und in der Anleitung. Ausnahme: } Alle Autoren, welche ein paar Module programmiert haben (für den Monitor oder Toolbox) und diese weitergeben wollen, sollten } eine Funktions- beschreibung als Textfile beilegen, eventuell in einem zusätzlich erzeugten Verzeichnis "D1:EXPANSIONS". Di}e einzigen änderbaren Dateien sind das Kon- figurationsfile SETUP.CFG sowie PAGESEQ.DAT! 2) Das Programm trägt nicht den S}tatus oder Titel "Public Domain", es darf jedoch im Public-Domain-Bereich weitergegeben werden ("Free Ware"). Nicht erlaubt} ist der gewerbliche Verkauf. Dies gilt für die (gedruckte) Anleitung sowie für das Programm. 3) Das Copyright }der mit dem 130XE+ Assembler erstellten Programme oder Quelltexte liegt bei den jeweiligen Autoren. Dies gilt auch für z}usätz- liche Programme in der Toolbox bzw. für Overlay-Kommandodateien, welche nicht zu diesem Assembler gehören. Hier}bei ist das Copyright der Autoren zu berücksichtigen und von Diesen eine schriftliche Genehmigung zur Weiter- gabe einzuholen}. Braunschweig, im Januar 1992 berücksichtigen und von Diesen eine schriftliche Genehmigung zur Weiter- gabe einzuholen% Wenn ein anderes DOS als MyDOS 4.50 benutzt wird müssen folgende Punkte be- achtet werden: - MEMLO muss kleiner als $1FF0 s}ein! - Das RAM unter dem OS-ROM darf nicht benutzt werden! - Die Toolbox-Funktion benutzt den XIO 39/40 von MyDOS zum Laden v}on Binär- files. Diese Funktion fällt also bei anderen DOS-Versionen weg! - Ebenso kann die "Quickloadfunktion" des Monitor}s nicht genutzt werden, in der ein File durch Angabe des Namens ("D1:Name.Ext") geladen werden kann. - Die auf dieser Syste}mdiskette vorhandenen Unterverzeichnisse lassen sich "höchstwahrscheinlich" nicht ansprechen. Eine Arbeitsdiskette (a}uf welcher sich nur der Assembler befindet) kann einfach hergestellt werden (haben Sie schon eine Kopie der Systemdiskett}e gemacht?). Alle Leute, welche nach dem Konfigurieren keinen Speicher mehr haben (für die RAMDisk) müssen eine Arbei}tsdiskette erstellen, da die RAMDisk des MyDOS auf der Systemdiskette NICHT abgemeldet werden darf! Die- sen Satz sollte sich} jeder an die Wand nageln! 1 - Die Kopie der Systemdisk booten und das Konfigurationsprogramm starten. 2 - Nachdem das Kon}figurationsfile erzeugt wurde, gehen Sie in das DUP.SYS ("DOS"). Konfigurieren Sie das DOS wie im Konfigurationsprogra}mm be- schrieben. Schreiben Sie das geänderte DOS allerdings NICHT auf die Systemdiskette, wenn Sie keine RAMDisk } MEHR zur Verfügung haben (130XE- User). Dann läuft das Installationsprogramm nämlich nicht mehr! 3 - Formatieren Sie e!}ine FREIE Diskette und schreiben Sie das DOS auf die- se Diskette (mit "H")! 4 - Booten Sie die Systemdiskette neu, und "}wählen Sie "Arbeitsdiskette ein- richten". 5 - Befolgen Sie die weiteren Programmanweisungen. e Systemdiskette neu, und c Konfigurieren des Makroassemblers: ================================== $} Vor dem Systemstart sollten Sie sich eine Sicherheitskopie bzw. Arbeitskopie der doppelseitigen Systemdiskette anfertigen%} und Die Original-Systemdiskette an einem sicheren Ort aufbewahren. Dies sage bzw. schreibe ich garantiert nicht umsonst! &} Alle folgenden Änderungen sollten nur auf dieser Arbeitskopie erfol- gen! Das Programm benötigt beim Systemstart eine'} RAM-Disk! Das MyDOS auf der Systemdiskette ist auf eine 130XE-Kompatible 64kB-RAMDisk konfiguriert. Wenn Sie im Verl(}auf der Installation zum Abmelden der RAMDisk im MyDOS-Menü aufge- fordert werden, dürfen Sie in keinem Fall das DOS zurück a)}uf die Installations- diskette schreiben! Sollten Sie so wenig Speicher haben, daß keine RAMDisk mitbenutzt werden kan*}n, so müssen Sie sich eine Systemdiskette einrichten und das MyDOS (mit der abgemeldeten RAMDisk) NUR AUF DIESE DISKETTE spei+}chern! Damit das Programm korrekt arbeiten kann, muß es an das vorhandene System ange- paßt werden. Dies betrifft vor alle,}m die RAMDisk-Ansteuerung. Dazu dient das Basicprogramm CONFIG.BAS im Verzeichnis SYSTEM auf der Systemdiskette. Es muß al-}s allererstes gestartet werden. Wählen Sie also nach dem booten den Menü- punkt "E - Konfigurieren" an. Das Konfiguratio.}nsprogramm wird gestartet. BITTE BEACHTEN: DAS PROGRAMM LÄUFT NUR MIT EINER 130XE-KOMPATIBLEN SPEICHERER- WEITERUNG, D.H. /}SIE MUß ÜBER "PORTB" ($D301) ANGESTEUERT WERDEN! Zuerst werden Sie nach dem RAMDisk-Typ gefragt, der in Ihren Computer einge0}baut ist. Wenn Sie sich im unklaren über Ihren RAMDisk-Typ sind, starten Sie das Programm PAGEFIND, ebenso wenn sie mehr 1}als eine 256 K-Byte RAMDisk haben! Das Programm findet JEDE mögliche Kombination um eine RAMDisk anzusprechen. Zu- sätzl2}ich wird die RAMDisk auch noch getestet. Weitere Informationen zu diesem Programm finden Sie in dem Abschnitt "PAGEFIND.BAS3}"! Wenn Sie im Besitz der ABBUC-Erweiterung (192 KB) sind, drücken Sie die Taste <3> und . Das Programm kennt in4}tern die Pagesequenz für diese RAMDisk und beginnt mit dem Test. Wenn Ihre RAMDisk nicht im Menü auftaucht, können Sie d5}ie Pagesequenz auch selber eingeben (wenn Sie sie kennen). Waehlen Sie dazu Punkt 0 - Manual/file input. Sollten Sie vorh6}er PAGEFIND gestartet haben, wird die von PAGEFIND erzeugte Pagesequenz verwendet. Wenn Sie dieses nicht wollen, müssen 7} Sie die Datei "D1:PAGESEQ.DAT" löschen! Dies geschieht auto- matisch wenn PAGEFIND gestartet wird; beenden Sie PAGEFI8}ND sofort ohne die Pagesequenz abzuspeichern. Sie können auch vom BASIC aus mit dem Befehl XIO 33,#19},0,0,"D1:PAGESEQ.DAT" die Datei löschen und das Programm mit RUN starten. Wenn Sie jetzt "manual/ file input" wählen, :} müssen Sie die Pagesequenz in 2-Stelligen Hexadezi- malzahlen eingeben. Das Programm testet die komplette RAM-Disk, lö;}scht also auch alle Daten in ihr! Nach dem testen meldet das Programm den gefundenen Speicher und schlägt Ihnen verschieden<}e Konfigurationen vor. Erläuterungen zur "Hashing Page": Diese Version des Assembler verwaltet die Symboltabelle mit e=}inem Hashing- algorhytmus und erreicht dadurch eine sehr gute Geschwindigkeit beim Assemb- lieren. Die "normale" Symbo>}ltabelle liegt unter dem OS-ROM. Sie bietet ca. 772 freie Einträge, und ihr Inhalt wird beim Aufruf der Menüleiste zerstö?}rt! Wenn Sie also eine "Hashing Page" wählen, hat die Symboltabelle Platz für 2048 (Zweitausendundachtundvierzig) Symbole un@}d diese Symbole bleiben natürlich (bis zum nächsten Assembliervorgang) erhalten. 772 Symbole reichen für zwei bis drei Pages A}Quelltext aus). Wenn Sie über genügend Speicher verfügen oder mehr als 3 Pages für den Quelltext konfigurieren, sollten Sie B}auf jeden Fall eine Page für die Symboltabelle nehmen! Die Frage des Programmes, wieviele Pages für den Assembler reserviC}ert werden sollten, bezieht sich nicht nur auf den Quelltextspeicher, sondern auf den kompletten Speicherbedarf des AssD}emblers! Wenn Sie also 8 Pages benutzen wol- len, so belegt das Programm selber eine davon. Wenn Sie nocht eine Page fürE} die Symboltabelle nehmen, haben Sie sechs Pages für den Quelltext. Dies ist auch ab einer 192kB RAMDisk die StandartkonfF}iguration. Sie können auch 7 Pages für den Quelltext reservieren, allerdings nur mit der kleinen Symboltabelle. Dies ist G}aber nicht empfehlenswert, es sei denn Sie benutzen sehr wenig Symbole in ihrem Quelltext! Ich habe in einen 48 kByte-H}Sourcecode schon über 700 Symbole benutzt, und das ist noch recht wenig - wie ich meine. Wenn Sie nur 4 Pages (oder wenigeI}r) für den Assembler benutzen dann antworten Sie bitte auf die Frage, ob eine Page für die Symboltabelle benutzt werden J}soll, mit N (für Nein). Wenn Sie mehr Pages (bis zu acht) benutzen, mit J (Ja)! Anschließend fragt das Programm, unter welcK}her Laufwerksnummer die RAMDisk an- gesprochen werden kann. Hier ist für MyDOS-Benutzer der Wert 0 (für Autokon- fig) vorgL}egeben. Folgender Absatz gilt nur für nicht-MyDOS-Benutzer: Wenn keine RAMDisk mehr vorhanden sein M}sollte (weil der komplette Erweiterungsspeicher für das Programm benutzt wird), geben Sie eine "1" ein, sonst geben SieN} bitte die Laufwerksnummer der RAMDisk ein. Erklärung: Das Programm kann unter MyDOS selbst feststellen, auf welcheO} Laufwerksnummer die RAMDisk eingestellt ist. Daher auch der Wert 0 für die Autokonfiguration. Da diese Funktion bei anP}deren DOS-Versionen versagt, muß hier die RAMDisk- Nummer UNBEDINGT eingegeben werden wenn ein anderes DOS benutzt wird!Q} Wird hier also ein Wert ungleich Null eingegeben, wird die interne Autokonfiguration umgangen und die eingegebene LaufwerksR}nummer verwendet! Die "1" für "keine RAM- Disk" entspricht ja einem Zugriff auf Laufwerk #1. Option für alle Besitzer dS}er EPROM-Disk von R. David: Als nächstes werden Sie nach der EPROMDisk-Nummer gefragt. Wenn Sie keine EPROMDiT}sk haben oder den Assembler nicht von der EPROMDisk booten wollen drücken Sie bitte nur , ansonsten geben SU}ie die Laufwerksnummer ein, welche die EPROMDisk nach dem vollständigen Booten erhalten soll! Erklärung: Nach dem BoV}oten von der EPROMDisk verdeckt diese ja das Diskettenlaufwerk #1. Mit dieser Funktion wird die EPROMDisk nach dem kompletteW}n Bootvorgang auf die angegebene Laufwerksnummer gesetzt. Dadurch ersparen Sie sich das manuelle Um- schalten mit dem AffenX}griff. Wird der Assembler mit der Quit-Funktion verlas- sen, so wird die EPROMDisk auf jeden Fall auf die Nummer zurückgeseY}tzt, welche vor dem Hochfahren des Assemblers eingestellt war! Als nächstes legen Sie bitte die Systemdiskette in LauZ}fwerk #1 ein um das Konfigurationsfile auf die Diskette zu schreiben. Sollte eine alte Konfigura- tion schon bestehen, wir[}d sie "geupdatet", d.H. nur die Speicherkonfiguration wird überschrieben (die alten Informationen wie Farben und die\} anderen Einstellungen bleiben erhalten), erkennbar an der Meldung "Updating!". Anmerkung: Sollte das Konfig]}urationsfile noch nicht existieren, erhalten Sie nach dem La- den des Assemblers die Meldung "Setup I/O failure!". Dies lie^}gt daran, das in dem Konfigurationsfile noch keine Systemeinstellungen gespeichert sind. Gehen Sie in das Setup-Menü und w_}ählen Sie "Save Setup" (nachdem Sie Ihre Lieblings- einstellung eingegeben haben), um ihre Einstellungen dauerhaft zu sichern`}. Anschließend gibt Ihnen das Programm die neue MyDOS-Konfiguration vor. Diese sollten Sie sich UNBEDINGT FEHLEa}RFREI NOTIEREN (Die Page-Sequenz-Tabelle)! Eine kleine Fehleingabe kann später stundenlange Arbeit zunichte machen! Erkb}lärung: Das MyDOS muß an die geänderte RAMDisk angepaßt werden. Das MyDOS läßt sich ja an (fast?) jede beliebigc}e RAMDisk anpassen. Die Ansteuerung der RAMDisk erfolgt dabei über eine "Page-Sequence-Table". Diese Tabelle ist vom Bd}enutzer fast uneingeschränkt änderbar, und diese Änderung muß mit größter Vorsicht geschehen, da sonst Daten in der RAMDe}isk verloren gehen können, evtl. sogar der Quelltext zerstört wird! Beachten Sie bitte, das die Page-Sequence def}s MyDOS nur 64 Byte umfaßt. Sollten Sie zu den Leuten gehören, die eine SEHR große RAMDisk haben, dürfen Sie nur max. 6g}4 Werte eingeben. Die "0" schließt das Ende der Tabelle ab! Nachdem das MyDOS vollständig konfiguriert ist muß es mit dh}er Funktion "H - Write DOS files" auf die Systemdiskette geschrieben werden. Jetzt steht einem Test nichts mehr im Weg. i} Booten Sie das System neu hoch. Schalten Sie dazu den Computer aus und nach ein paar Sekunden wieder ein, damit ALLE Daten j}in der RAMDisk gelöscht werden. Anmerkung zum RAMDisk-Speicher: Ich habe einmal fälschlicherweise eine Konfiguration angek}geben, in welcher ich eine notdürftige Spar-RAMDisk mit 2 Pages (32 k-Bytes) vorschlug. Dies ist aber ein Irrtum meinerl}seits gewesen, da in einer 32kB RAMDisk kein Inhaltsver- zeichnis angelegt werden kann - Dieses liegt nämlich in den Sektorm}en 360-368. Eine 32kB RAMDisk hat aber nur 256 Sektoren zu je 128 Byte. Erst eine 48 kB RAMDisk bietet Platz für das Diren}ctory (384 Sektoren zu je 128 Bytes). PAGEFIND.BAS ======o}====== Das Programm PAGEFIND dient zum Herausfinden der Größe der RAMDisk, dem Testen der RAMDisk und zum Erzeugen einer p}Pagesequenz-Tabelle für das Konfigurations- programm. Nach dem starten werden Sie mit einem Auswahlmenü konfrontiert. Wählq}en Sie als allererstes Punkt 1 - finde Pagesequenz: Das Programm gibt einen Hinweistext aus, anschließend beginnt es mit dr}em Test der RAMDisk. Dieser Vorgang dauert dank Maschinensprache nur wenige Sekunden. Dabei wird auch gleich noch das Ts}imingverhalten überprüft. Bei diesem Test (wie auch allen anderen) darf kein Fehler auftreten! Sollten dennoch Probleme mit}t dem Timing auftreten, können Sie mir schreiben. Um aber helfen zu können, benötige ich eine Fehlerbeschreibung, eine u} genaue Angabe des RAMDisk-Types sowie einen ausreichend frankierten und adressierten Rückumschlag. Eine Ga- rantie auf v}100%-ige Fehlerbehebung kann ich nicht geben, aber Tips zum beheben von Timingproblemen (z.B. Klaus-Peters RAMDisk, hatte dw}a selber Probleme, die ich aber mit Einbau von zwei zusätzlichen Widerständen beheben konnte. Ich habe hier z.B. in dix}e CAS-Leitung zu den neuen und den alten RAMs jeweils ei- nen 470-Ohm Widerstand zwischengeschaltet und seitdem keine Probly}eme mehr ge- habt. Dies könnte auch bei anderen RAMDisktypen funktionieren). Nachdem Ihnen daß Programm die Größe der Rz}AMDisk "verraten" hat, starten Sie bitte den "Short RAM-Test": Das Programm schreibt in alle RAMDisk-Seiten (Pages) ein bes{}timmtes Muster und liest es wieder aus. Sollte ein Fehler auftreten, teilt Ihnen das Programm das mit. Wenn Sie viel Zeit|} haben, können Sie auch den "Deep RAM-Test" starten, welcher etwas länger dauert. Bei diesem Test wird ein bestimmtes Bitmus}}ter im Speicher verschoben und verglichen usw. Sollte ein Fehler auftreten, bricht das Programm ab. Mit <5> speich~}ern Sie die Pagesequenz-Tabelle auf D1: und starten das Konfi- gurationsprogramm erneut. Wählen Sie dann "0 - manual/file inp}ut". Das Programm liest die Pagesequenz aus dem File. s Konfi- gurationsprogramm erneut. Wählen Sie dann "0 - manual/file inp6 Der Editor des 130XE+ Makro-Assemblers: ======================================= Der E }ditor ist kein gewöhnlicher Texteditor, sondern ein speziell für die Erstellung von gut lesbaren Assembler-Quelltexten g ‚}edachter Fullscreen- editor. Er kann aufgrund seines Konzeptes auch nicht zum Erstellen von Briefen oder Ähnlichem benut ƒ}zt werden, da der komplette Quelltext in Token- form gespeichert wird und bereits bei der Eingabe ein Syntaxcheck vorge- n „}ommen wird. Wird ein Fehler festgestellt, muß dieser korregiert bevor die Zeile in den Quelltext übernommen wird. Der Quell …}text wird in Pages eingeteilt. Diese Pages sind aufgrund der RAM- Disk-Größe jeweils 16 k-Bytes groß. Wegen fehlender Za †}uberkünste ist es mir leider nicht gelungen den Speicher zusammenhängend zu verwalten (also statt 6 Pages mit je 16 k-Byte ‡}lieber 1 Page mit 96 k-Byte). Entsprechende Versuche waren aufgrund der fehlenden Geschwindigkeit unzumutbar. Ich denk ˆ}e aber, das die Unterteilung in jeweils 16 k-Byte große Pages sogar ei- nen Vorteil gegenüber einer einzigen, großen Page hat ‰}. In der ersten Bildschirmzeile befindet sich die Titelzeile des Assemblers mit der Versionsnummern und der Copyright-n Š}otiz. Wenn die Menüzeile auf- gerufen wird, erscheint anstatt dieser Titelzeile eine Menüleiste (Icons). In der zweiten Zei ‹}le wird die aktuelle Seite (Page) sowie der freie Speich- er in dieser Seite angezeigt, außerdem noch eine eventuelle Fehlerm Œ}eldung. Der Cursor wird mit den Cursortasten gesteuert (mit CONTROL). Wenn er an den oberen oder unteren Bildrand komm }t wird der Text gescrollt. Mit der Tastenkombination SHIFT/CursorUp/Down kann um jeweils 16 Zeilen gescrollt werden. Eine Ž}n Insert-Modus gibt es nicht. Um Zeichen in eine Zeile einzu- fügen muß mit CONTROL/Insert zuerst Platz geschaffen werden }. Mit ESCape kann eine versehentliche Änderung rückgängig gemacht werden. Mit SHIFT/ Delete werden einzelne Zeilen gel }öscht. Mit SHIFT/Insert kann man Zeilen in den Quelltext einfügen. Mit SHIFT/CONTROL/- kommt man zum Textanfang und mit ‘}SHIFT/CONTROL/= zum Textende. Blockmarkierung: ---------------- Ein Textblock mann mit der Tastenkombination CONTROL und ’}"," oder "." (für die Zeichen "[" und "]") markiert werden. Dieser Block kann z.B. ge- löscht, kopiert, gespeichert “} oder gedruckt werden. Wenn der Textblock vollständig (d.H. Anfang UND Ende) markiert wurde, wird der Text inver- tier ”}t dargestellt. Die Markierung wird automatisch gelöscht wenn der Text editiert oder umgeschaltet wird. CONTROL-Funktione •}n: =================== Y Assemblierung starten P Sprung in den Monitor [ Blockstar –}t setzen ] Blockende setzen ? Sprung zum Blockanfang CLEAR Blockmarkierung löschen INSE —}RT fügt ein Leerzeichen in die Zeile ein DELETE löscht das Zeichen unter dem Cursor TAB setzt d ˜}en Tabulator (siehe gesonderte Erklärung unten) ESC Menüzeile aktivieren SHIFT/- Sprung zum Textanfang SH ™}IFT/= Sprung zum Textende Quelltext-Ebenen: ================= Aus dem Quellext kann mit SHIFT/CONTROL/Zahlentaste š} gemäß der Konfiguration eine der maximal 7 Seiten ausgewählt werden. In der Statuszeile wird die eingestellte Seite, der ›} freie Speicher in dieser Seite und eine eventuelle Fehlermeldung angezeigt. Funktionen wie Laden, Speichern oder Block-L œ}öschen werden über die Menü- zeile angewählt. Setzen des Tabulators: ====================== Mit der Tastenkombination C }ONTROL/Tab kann der interne Tabulator gesetzt werden. Das ist die Spalte, wo Mnemonics (z.B. "LDA") oder Kommentare an- fan ž}gen. Steht nur ein Kommentar in der Zeile, erfolgt kein Einrücken des- gleichen. Beispiel: +- Tabulator 1 +-- Ÿ}Tabulator 2 1234567890|1234567890123456|890123456789 | | ; Nur eine Kommentarzeile (ohne Mnemonic)  }- wird nicht eingerückt! symbol: LDA #1 ; Kommentar hinter dem Mnemonic STA (zp_base+offset),Y ; Komme ¡}ntar CLC ; Alles klar? Dabei entscheidet die Cursorposition, welcher Tabulator gesetzt wird. s ¢}teht der Cursor in den ersten 15 Spalten, wird der 1. Tabulator gesetzt, sonst der Zweite! Genauer kann man sich an der A £}nzeige des freien Speich- ers orientieren. Steht der Cursor unter der 100er-stelle oder rechts davon so wird der 2. Tabulato ¤}r beeinflußt. Steht er unter der 1000er-Stelle oder links davon so wird der 1. Tabulator gesetzt. Man kann also z.B. ganz n ¥}ach rechts gehen (Spalte 39) und den Tabulator 2 setzen, dann verbannt man alle Kommentare vom Bildschirm bis auf die "nur-K ¦}ommentarzeilen"! Diese Lösung hat den Vorteil, daß ein Ausdruck sauber und geordnet erscheint. Speicherplatzverbrauch: Be §}dingt durch die Tokenisierung belegt eine Zeile Quelltext des Assemblers eventuell etwas mehr Speicher als es die gleiche Z ¨}eile im ASCII-Format tun würde. Andersherum spart das Tokenformat Zeit beim assemblieren. Beispiel zu einigen Konstanten und ©} ihrem Speicherplatzbedarf im Quelltext: Wertebereich | Normal ASCII | Tokenformat ------- ª}------+--------------+------------- 1-9 | 1 Byte(s) | 2 Byte(s) 10-99 «}| 2 -"- | 2 -"- 100-255 | 3 -"- | 2 -"- 256-999 | 3 -"- ¬} | 3 -"- 1000-9999 | 4 -"- | 3 -"- 10000-65535 | 5 -"- | 3 -"- ­} $0-$F | 2 -"- | 2 -"- $10-$FF | 3 -"- | 2 -"- ®} $100-$FFF | 4 -"- | 3 -"- $1000-$FFFF | 5 -"- | 3 -"- %xxxxxxxx ¯} | 2-9 -"- | 2 -"- (8-Bit-Binärzahl) Eine Zahl im Tokenformat belegt erstmal ein Byte ("Header"), sowie 1 oder 2 °} weitere Bytes für den Wert. Im Header sind verschiedene Informationen ge- speichert, z.B. ob die Konstante negativ ist, ±}wie der Editor sie darstel- len soll (hexadezimal, dezimal oder Binär), ob sie 8 oder 16 Bit belegt (Zahlen von 0-255 be ²}legen 8 Bit, Zahlen ab 256 belegen 16 Bit) und so wei- ter. Eine negative Konstante belegt also genausoviel Speicher wie eine ³} Pos- itive Konstante (bei meinem Assembler). Bei ASCII-Orientierten Editoren wie z.B. dem ATMAS kann man "LDA #-1" s ´}chreiben, um den Akkumulator mit dem Wert $FF zu laden (-1 = $FFFF, der ATMAS macht sich aber nichts aus dem 16-Bit-Wert). B µ}eim 130XE+ Makro-Assembler spart diese Technik nichts! Man sollte sich angewöhnen $FF zu schreiben wenn man $FF meint. ¶} Ausserdem ergibt ein "LDA #-1" bei meinem Assembler eine Fehlermeldung, da hier versucht wird ein 8-Bit Register m ·}it einem 16-Bit Wert zu laden. Diese Fehlermeldung ist kein "harter" Fehler, sondern als Warnung zu deuten. Diese Warn ¸}ungen können aber im Setup auch verhindert werden, so daß keine Meldung auftritt und das Assemblieren nicht abgebrochen wird ¹}. Bedingt mit dem neuen Tokenformat wurde eine neue Old-Routine eingebaut, um einen Quelltext nach einem harten Absturz º}zu retten. Mit SHIFT/CAPS wird diese Routine aufgerufen, sie wirkt nur ab der Zeile, in der der Cursor steht. Diese Ol »}d-Routine sollte nur im Notfall aufgerufen werden, wenn z. B. in der Zeile lauter Control- oder Grafikzeichen erscheinen (n ¼}ach einem Absturz). Diese Routine kann aber auch die aktuelle und darauffolgende Zei- len kaputtmachen. Nach ihrem Aufruf muß ½} übrigens die "normale" Old-Funktion aus dem Menü aufgerufen werden, damit einige interne Zeiger korregiert wer- den. Sonst k ¾}önnen Sie z. B. nicht mehr hochscrollen usw.! Anmerkung: Es wird nur die aktuelle Zeile zerstört wenn in ihr irgendwo ein ¿}Byte vor- kommt indem alle Bits gesetzt sind. Dies ist z.B. bei Zahlen wie "255", "$FFxx", "$(xx)FF" usw. der Fall. In À}diesem Fall wird die Zeile an dieser Stelle aufgeteilt und der Rest der Zeile erscheint als neue Zeile. Beispiel: Geben S Á}ie im Editor die Zeile "LDA #222+255" ein. Diese Old- Funktion wird die Zeile zerstören, da der Wert 255 als Zeilenheader Â}inter- pretiert wird (hat was mit dem internen Aufbau des Quelltextes zu tun). Wenn Sie diese Funktion am Ende des Quelltext Ã}es aufrufen kann es vorkommen, daß der Rest eines alten Quelltextes (der vorher bearbeitet wurde) ange- hängt wird. Diese Ä}r muß dann als Block markiert und wieder gelöscht werden. Quelltextes (der vorher bearbeitet wurde) ange- hängt wird. Diese : Der Assembler: ============== Der Assembler wird ausÆ} dem Editor mit CONTROL/Y gestartet und kehrt nach der Übersetzung des Quelltextes wieder zum Editor zurück. Sollte eiÇ}n Fehler aufgetreten sein, so wird der Fehler im Klartext angezeigt. Nach der Assemblierung werden die Endadresse, die AÈ}nzahl der Symbole und Makros sowie der freie Speicherplatz in der Symboltabelle angezeigt. Makro-Fähigkeit: --------------É}-- Es können maximal 7 numerische Parameter an Makros übergeben werden. Makros können nicht verschachtelt werden. MaÊ}kros müssen vor ihrem ersten Aufrufen definiert werden! Soll ein Makro benutzt werden (bzw. aufgerufen), so muß das deË}m Editor "gesagt" werden indem dem Mako-Namen einen Punkt vorangestellt wird. Wenn das Makro also "Test" heißt, so müsseÌ}n Sie ".TEST" eingeben. Der Editor schreibt Makro- aufrufe grundsätzlich in Großschrift. Definieren von Makros: ----------Í}------------ Eine Makrodefinition beginnt mit dem Namen des Makros, gefolgt von der di- rektive (Anweisung an den AssemblerÎ}) "MAC" und der Anzahl der zu übergeben- den Parameter. Letzteres kann auch entfallen wenn keine Parameter an das Makro zuÏ} übergeben sind. Mit "END" wird die Makrodefinition beendet. Name: MAC (Anzahl der Parameter) ... Assembler Quelltext .Ð}.. END Beispiel für Makros: Poke MAC 2 LDA #?2 ; Lade Accu mit High-Byte STA ?1+1 ; Schreibe aÓ}n Adresse+1 END Loop: MAC ; ohne Parameter LDY #0 Maclp@: DEY BNE Maclp@ ; @ ist der KlammerÔ}affe für locale Symbole END Achtung! Symbole dürfen nur 8 Zeichen lang sein! Bei lokalen Symbolen wird an dasÕ} Symbol eine 2-Byte-Integerzahl drangehängt (wenn möglich). Der "Klammeraffe" wird nicht überschrieben, da er Später zu UnÖ}terscheidung in der Symboltabelle benötigt wird: Maclp@ Ok, Gesamtlänge des Symboles ist 6 Zeichen (+2 Byte-Integer)×} Testlp@ Geht auch, allerdings "nur" 256 mal möglich. Testsym@ Falsch, da kein Platz mehr für die Nummerierung istØ}! Als Local deklarierte Symbole können auch ausserhalb von Macros verwendet werden (sollte aber nicht sein). Es wird keinÙ}e Fehlermeldung ausgegeben. Einsatz von Makros im Quelltext: -------------------------------- start: .POKE $D301,$FF Ú} .DPOKE 560,DLIST .SCHLEIFE Die Anzahl der übergebenen Parameter muß mit der in der Definition angÛ}e- gebenen Anzahl übereinstimmen, ansonsten erhalten Sie beim assemblieren die Fehlermeldung "Macro error!". Mathematische Ü}Operatoren: ------------------------- Ein "Ausdruck" (Expression) darf aus maximal 7 Klammerebenen bestehen. Folgende RÝ}echenoperationen sind möglich (in Reihenfolge ihrer Priorität): # ... EXKLUSIV-ODER Verknüpfung & ... Binäre UND VerknüpfunÞ}g ! ... Binäre ODER Verknüpfung * ... Multiplikation / ... Division + ... Addition - ... Subtraktion Mit ">" oder "H:"kanß}n das High-Byte eines Wertes selektiert werden, mit "<" oder "L:" das Low-Byte. Der Fehler in der alten Matheroutine à}konnte behoben werden, die Selektion klappt jetzt auch bei verschachtelten Aus- drücken. Beispiel: Adress: DFB >(tab1+oá}ffset),H:(tab2+offset)... Konstanten: ----------- ` ... ATASCII-Code des nachfolgenden Zeichens (Beispiel: CMP #`A) 10 ..â}. dezimale Konstante $F ... hexadezimale Konstante %1 ... binäre Konstante ^x ... Bit-Konstante. ^0 entspricht 1 , ^7 entã}spricht 128 und ^15 ent- spricht $8000. Negative Konstanten: -------------------- Konstanten und Symbolen kann auchä} ein Minuszeichen vorangestellt werden. Assembler-direktiven: --------------------- - ORG Al(,Ap) Festlegen der Anfangsaå}dresse eines Programmes. Al = logische Adresse Ap = physikalische Adresse ORG $4000 assembliert das Programm nach Adressæ}e $4000. Dort ist es auch lauffähig. ORG $4000,$6000 assembliert das Programm nach $6000. Lauffähig ist es aber ab Adresseç} $4000 ! - EQU oder "=" Zuweisung einer Konstanten oder eines Rechenergebnisses an ein Symbol. Achtung: Die ATMAS-Direkè}tive EPZ (welche EQU entspricht) wurde aus Platz- gründen nicht mit übernommen! Rtclock: EQU $14 "rtclock=$14" wird zu "é}rtclock: EQU $14" - DFB, DFW Definieren von Konstanten im Objektcode. Bittab: DFB 1,2,4,8,16,32,64,128 ; Daten in ê}Bytebreite (8-Bit) AdressTb: DFW $b800,$bc00,$9430... ; Daten in Wortbreite (16-Bit) - ASC Text = Stringë}-Trennzeichen (" / \ % $) Achtung: Das STZ kann nicht mehr im Text vorkommen! " = Text im ASCII-Code einfügen / = Inverserì} ASCII-Code \ = ASCII-Code, aber (nur) beim letzten Zeichen Bit 7 gesetzt (Ende-kennung) % = Interner Bildschirmcode $ = Inteí}rner inverser Bildschirmcode Beispiel: ASC "ATASCII-Code" oder ASC %Bildschirmcode% - OPT Option beim assemblierenî} des Quelltextes setzten. ist dabei ein Ausdruck, von welchem nur die unteren 8 Bit Verwendung finden. Hier habe iï}ch ein neues Verfahren eingebaut. Bit 7 bestimmt, ob die anderen Bits in dem Assemblerinternen Option-Flag gesetzt oder gelöð}scht werden. Am Anfang der Assemblierung ist dieses Flag immer 0. Beispiel: OPT %x0010011 x = 1 ... Die Bits 0,1 und 4 werdeñ}n gesetzt! x = 0 ... Die Bits 0,1 und 4 werden gelöscht! Die anderen Bits bleiben unbeeinflußt. Dies hat den Zweck, an verscò}hiedenen Stellen während der Assemblierung gezielt bestimmte Bits zu setzen. Bedeutung der Bits (wenn gesetzt): 6 - Quickó} mode. Nach der Assemblierung wird sofort gestoppt ohne die Be- legung der Symboltabelle anzuzeigen , alle anderen ô}Optionen werden ebenfalls ignoriert (auch die GEN-direktive)! 5 - Non-Query. Normalerweise wird bei der Ausgabe der Sõ}ymboltabelle immer nach 16 Zeilen gestoppt und der Anwender muß eine Taste drücken um die nächsten 16 Zeileö}n angezeigt zu bekommen. Wird dieses Bit ge- setzt, scrollt die Ausgabe bis der Anwender eine Taste drückt, noch- ÷} maliger Tastendruck läßt das Listing weiterlaufen. 4 - Send Report. Nach dem (fehlerfreien) Assembliervorgang wird derø} An- wender nach einem Ausgabegerät gefragt. Dies ist normalerweise das unter "Printer-device" voreingestelle ù}Gerät. Auf Diesem wird dann die Symboltabelle ausgegeben, siehe auch nachfolgende Bits. 3 - Head-Line. Wenn Bit 4 (ú}Send Report) gesetzt wurde, wird eine Titel- zeile ausgegeben. Der Text muß dazu in einer Kommentarzeile in der û} 1. Seite stehen. Diese Kommentarzeile muß die erste Zeile im Quell- text sein und als erstes Zeichen ein ">" enthalü}ten! Beispiel: " ; > Dieses ist die Titelzeile! Hier kann der Programmname stehen." 2 - Liste Makro-Namen. Die deý}finierten Makros werden mit ihrem Status angezeigt. 1 - Liste Symbole. Alle definierten (globalen) Symbole werden mþ}it ihrem Status angezeigt. 0 - Mark labels. Alle Symbole, welche definiert werden solange dieses Bit gesetzt iÿ}st, werden intern "markiert", ihr Status in der Symbol- tabelle ist dann "marked". Alle So markierten (globale}n) Symbole können in eine Datei geschrieben werden und in andere Programme übernommen werden! Siehe auch G}EN und LIB. Hier macht die Bit-Setz- und Löschmethode eigentlich erst Sinn, so kann gezielt nur dieses Bit beein}flußt werden ohne die anderen, am Anfang gesetzten Optionen zu löschen! Ach ja: OPT 0 schaltet den Bildschirm ab! } - GEN "" (z. B. "D8:LIBRARY>SYMBOL.LIB") GENerate dient zum abspeichern der "markierten" Symbole. } Diese können dann in andere Quelltexte mit der LIB-direktive übernommen werden. Achtung, My- DOS unterscheidet zwischen Gro}ß- und Kleinschreibung! - LIB "" Mit LIBrary können Symbole aus anderen Programmen in eigene Prog}ramme über- nommen werden. Wichtig, wenn man ein Programm in zwei oder mehrere Quell- texte aufteilt. So kann man z.B}. eine Unterprogrammbibliothek assem- blieren , mit GEN alle Unterprogramm-Label abspeichern und auf diese Routinen }dann über ihre Namen von einem anderen Programm aus zugreifen. Zweckmäßigerweise sollten die Libraries in der RAM-Disk abg }elegt werden. - HLT Hält das Assemblieren in der aktuellen Seite an und macht in der nächsten Seite weiter (wenn möglich }). Den Assemblierungsvorgang kann man mit der ESC-Taste unterbrechen! und macht in der nächsten Seite weiter (wenn möglichH Funktionen der Menüleiste des 130XE+ Assemblers: ============================================== }== Die Menüleiste wird vom Editor aus mit der Tastenkombination CONTROL/ESCape aktiviert. In der obersten Bildschirmz }eile erscheint dann anstelle der Titelzeile die Menüleiste. Diese Menüleiste enthält 16 Menüpunkte, aus denen mit den Cu}rsortasten oder den Pfeiltasten "größer als" bzw. "kleiner als" einer ausgewählt werden kann. Der gerade ausgewählte Menü}punkt wird invertiert dargestellt. Um die gewählte Funktion zu aktivieren, ist die - Taste zu drücken. Mit ESCa}pe kommt man wieder in den Editor. Anmerkungen zur Fileauswahl in der Fileselect-Box: -------------------------------------}------------- Sollte irgendeine Diskettenoperation angewählt werden so erscheint eine Datei-Auswahlbox. In dieser Bo}x wird ein Teil des Inhaltsverzeichnises, die Laufwerknummer sowie der freie Speicherplatz auf der Diskette ange- zeigt. } In den ersten beiden Zeilen wird die Verzeichnistiefe bzw. der Direktory- pfad angezeigt. Unterverzeichnisse werden mi}t einem ":SUB" anstelle der Sektorenlänge gekennzeichnet. Zum Einladen muß ein File mit den Cursortasten ausgewählt w}erden und gedrückt werden. Der Filename erscheint jetzt in der unteren Zeile der Box. Zum laden drücken Sie n}ochmals oder wählen Sie ein anderes File. Die Dateiauswahl kann mit der ESCape-Taste abgebrochen werden. Zum} Abspeichern einer Datei wählen Sie den Namen aus dem Inhaltsverzeichnis wie beim laden (zum überschreiben einer bereits ex}istierenden Datei) oder geben Sie einen neuen Namen ein. Dann drücken Sie (nochmals) . Sollte eine abzuspeicher}nde Datei bereits auf der Diskette vorhanden sein, so werden Sie gefragt, ob Sie die Datei überschreiben oder den Vorgang ab}- brechen wollen. Die Laufwerksnummer können Sie mit "SHIFT" & Zahlentaste wählen, also z.B. "SHIFT/8" für die RAM-Disk.} Es erscheinen nicht immer alle Filenamen in der Dateiauswahlbox. Quelltexte im internen Format haben den Extender ".A}SM", z.B. "D8:FASTLOAD.ASM", Quelltexte im ASCII-Format haben den Extender ".SRC", z.B. "D1:IOLIB.SRC" ! In den jewe}iligen Boxen erscheinen daher auch normalerweise nur Dateien mit den jeweils passenden Endungen. Diese Endung (z.B. ".}SRC") wird auch in der Dateiauswahlbox angezeigt. Mit der TABulator-Taste kann aber zwischen der normalen Endung und de}m kompletten Inhaltsverzeichnis gewechselt werden. Mit SHIFT/TAB kommt man aus einem Unterverzeichnis in das vorherige Ver }zeichnis (Parent-Funktion). Nun aber zu den Funktionen in der Menü-Zeile: --------------------------------------------- 1!}. Inhaltsverzeichnis 2. Quelltext laden 3. Quelltext speichern 4. ASCII-Text laden 5. ASCII-Text speichern 6. Text druck"}en 7. Suche nach ... 8. Sprung zum Disk Operating System (DOS-Menü) 9. Toolbox -> Assembler-Hilfsprogramme laden und start#}en. 10. Preferences / Voreinstellungen 11. Block merken ("abfotografieren") 12. Block einfügen ("ankleben") 13. Block ausschn$}eiden (löschen und zwischenspeichern) 14. Block löschen ("wegradieren") 15. Quelltext reparieren / retten (Old-Funktion) 16. %}Quelltext löschen 1. Inhaltsverzeichnis: ----------------------- - ohne Worte - 2. Quelltext laden: ------------------&}-- Es erscheint die Datei-Auswahlbox. Wählen Sie die gewünschte Datei oder brechen Sie die Funktion mit ESCape ab. Soll'}te die einzuladende Datei kein Quellcode im internen Format sein, erscheint eine Fehlermeldung und ein evtl. im Speicher(} stehender Text bleibt erhalten. Achtung! Es erscheint keine Warnung, falls dieser Menüpunkt versehentlich angewählt wird)} und ein im Speicher stehender Text noch nicht gesichert wurde! 3. Quelltext speichern: ------------------------ Es *}erscheint eine Datei-Auswahlbox. Wählen Sie eine Datei aus oder geben Sie einen Namen über die Tastatur ein. Drücke+}n Sie , der Speichervorgang beginnt. 4. ASCII-Text laden: --------------------- Vorgehen wie bei Punkt 2,} (Quelltext laden). Der ASCII-Text wird Zeilenweise an der Qursorposition in den evtl. vorhandenen Quelltext ein-}gefügt. Sollte der Speicherplatz in der aktuellen Quelltextebene nicht ausreichen, wird NICHT auf die nächste Seite umgesch.}altet. 5. ASCII-Text speichern: ------------------------- Dateiauswahl wie bei Punkt 3 (Quelltext speichern). Hi/}er gibt es allerdings zwei verschiedene Möglichkeiten: Wenn mit der Blockmarkierungs- funktion ein Textblock markiert 0}wurde (der so markierte Text erscheint invertiert), so wird nur der so markierte Bereich abgespeichert. Sonst wird der1} Text ab der Cursorposition (Zeile, in der der Cursor steht) bis zum Ende der aktuellen Seite gespeichert. 6. Text druck2}en: ----------------- Textmarkierung siehe Punkt 5 (ASCII-Text speichern). Der Text wird auf dem Drucker oder ein anderes D3}evice geschrieben (wählbar). Der wohl wichtigste Unterschied ist, das bei diesem Menüpunkt alle Leerzeichen mit ausgegeben4} werden während bei Punkt 5 der Text im "kurzen" ASCII-Format ausgegeben wird. Voreingestellt als Ausgabegerät ist de5}r Drucker bzw. das im Pre- ferences-Menü eingestellte Gerät. Dises kann auch ein beliebiger Schnitt- stellentreiber sein (6}z.B. "R:600,8N1" für eine RS-232-Schnittstelle). Die Voreinstellung kann natürlich auch geändert werden. Beispiel für das 7}Ausgabeformat: ------------------------------- Ausgabe auf Diskette nach Punkt 5 ("_" = Leerzeichen): _Symbol:LDA_(Pointer)8},Y ; mit Quelle laden _INY ; nächster Wert Ausgabe nach Punkt 6 auf ein beliebiges Gerät (formatierte Ausgabe): _Symbol:__9}_______LDA (Pointer),Y ; mit Quelle laden _________________INY ; nächster Wert 7. Suche nach ... ------------------ Der :} Suchbegriff kann eingegeben bzw. geändert werden. Mit drücken von wird ab der Cursorposition gesucht. Bei e;}rfolglosem Suchvorgang steht der Cursor am Textende, ansonsten wird die Zeile, in der eine Übereinstimmung stattfind<}et, invertiert dargestellt. Soll weiter gesucht werden ist wieder die - Taste zu drücken, ansonsten kann mit=} ESCape der Suchmodus verlassen werden. Während der Suche kann man mit der - Taste den Suchvorgang abbrechen. 8.>} Sprung zum Disk-Operating-System: ------------------------------------- Das DUP.SYS-Menü wird in den Computer geladen ?}und gestartet. Achtung, Quelltext sichern nicht vergessen! 9. Toolbox ----------- Hier können (selbstprogrammierte) Hil@}fsprogramme zum Assembler geladen und gestartet werden. Es können auch "normale" Maschinenprogramme geladen wer- den. Lesen A}Sie bitte den gesonderten Abschnitt "Toolbox"! 10. Das Setup-Menü / Voreinstellungen: -------------------------------------B}- Hier können Sie folgende Einstellungen vornehmen: 1 - Printer-Device (Default-Gerät bei Anwählen des Drucker-Symbols). C} 2 - Farben einstellen (mit "<", ">", "+" und "-"). 3 - Den Zeichensatz wählen, der nach dem Booten eingeschaltet sein soll.D} 4 - Den Modus für die Direktory-Sortierroutine wählen. 5 - Das INVERSE-Menü-Flag setzen (von den Farben abhängig). 6 - DeE}n IO-Sound an- oder abschalten. 7 - Die erweiterte Schreibweise für Binärzahlen einschalten. 8 - Die erweiterte SchreibweisF}e für Hexadezimalzahlen einschalten. 9 - Das Ausgabeformat für die High/Low-Kennzeichnung wählen. 10 - Den Layout-Modus des G}Editors aktivieren. 11 - Die Warnungen des Assemblers unterdrücken. Die geänderten Einstellungen können mit "Save SetupH}" abgespeichert, mit "Exit & use" nur benutzt oder mit "Load Setup" die vorhandene Einstellung geladen werden. 1 - PrintI}er-Device: -------------------- Wenn Sie keinen Drucker haben, den Sie über den Gerätetreiber "P:" ansprechen könnJ}en, aber z.B. ein "RS-232"-Treiber haben, so können Sie diesen vom Monitor aus einladen und initialisieren. Tragen SieK} dann hier die Gerätetreiberbezeichnung ein (z.B. "R:300,8N1"). Der hier einge- tragene Gerätename wird später auch aL}ls default für die Reportfunktion des Assemblers benutzt. 2 - Farben einstellen: ----------------------- Stellen Sie hierM} die Farben ein, welche der Assembler nach dem Booten haben soll. Manche Leute wollen lieber ein popelgrünes Bild, ichN} bevorzuge schwarz-weiß. 3 - Zeichensatz wählen: ------------------------ Hier können Sie einschalten, ob sie lieber dO}en normalen Zeichensatz oder den mit den internationalen Sonderzeichen haben wollen. Der Fileselektor aktiviert automatisP}ch den Standartzeichensatz, da er ein paar der Grafik- zeichen benötigt. Im Normalfall sollte auch der Standartzeichensatz Q}einge- schaltet sein. In einer früheren Version des Assemblers wurde der Zeichen- satz mit der Symboltabelle überschriebeR}n, was nicht gerade besonders gut aussah. in dieser Version kann der Speicher der Symboltabelle auch in eine RAMDisk-Bank gS}elegt werden, hier entfällt dann daß flackern. Der Interna- tionale Zeichensatz wird aber nur zum Speichern des InhaltsverT}zeichnisses vom Fileselektor benötigt, dann ist aber eh der normale Zeichensatz einge- schaltet. Sollte man den AssemblerU} auf "normal hashing" konfiguriert ha- ben, so sollte der internationale Zeichensatz benutzt werden. 4 - Index Sort: -----V}----------- Hier kann zwischen den drei Modi "Full", "Name" und "None" umgeschaltet werden. Im Modus "Full" werden UW}nterverzeichnisse vor den Dateien ange- zeigt während bei "Name" nur nach den Namen sortiert wird. Bei "None" wird natürlichX} überhaupt nicht sortiert. 5 - Inverse Iconbar? --------------------- Abhängig von den gewählten Farben ist es nötigY}, dieses Flag zu setzen. Dieses hat nur einen optischen Sinn (ausprobieren). Die Auswirkung die- ses Flags werden allerdiZ}ngs erst beim nächsten Aufruf der Menüleiste sicht- bar. 6 - Serial IO-sound? --------------------- Mit diesem Flag ka[}nn das Ladegeräusch aus- oder eingeschaltet werden. Einige Speeder berücksichtigen dieses Flag allerdings nicht. 7 - Ex\}pand Binary? ------------------- Hiermit kann die "erweiterte" Schreibweise von Binärzahlen im Editor einge- schaltet werden]}. Ist dieses Flag auf "Yes", werden Binärzahlen immer in 8- oder 16-Bit-Gruppen ausgegeben, d.H. ggf. wird mit Nullen ^}aufgefüllt! Beispiel: %1101 oder %00001101. 8 - Expand Hex? ---------------- Ist diese Eintellung aktiviert, werden _} Hexadezimalzahlen ("Sedezimal- zahlen") Zwei- oder Vierstellig angezeigt. Beispiel: $1/$01 oder $123/ $0123. 9 - Ex`}pand High/Low? --------------------- Erweiterte Schreibweise der High- und Lowbyteselektion einschalten. Die "normale" a}Schreibweise ist "<" für Lowbyte oder ">" für Highbyte, z.B. "LDA #>Test" läd den Akkumulator mit dem Highbyte des Symbolb}es "Test". Ist diese Option eingeschaltet wird statt "<" ein "L:" ausgegeben und statt ">" ein "H:", also "LDA #H:Test". c} Der Editor akzeptiert beide Möglichkeiten beim eingeben. 10 - Layout? ------------ Wenn der Layoutmodus eingeschaltet isd}t, kann man den Cursor im Editor frei und ohne Einschränkungen bewegen. Im Normalmodus wird beim Verlassen einer Zeile der e} Cursor an das Ende der neuen Zeile gesetzt, wenn die Cursor- position rechts von diesem Ende ist. Einfacher ausgedrücktf}: Ist die neue Zeile, in die der Cursor bewegt wird, kleiner als die Cursorspalte, so wird der Cursor an das Ende dieser Zeig}le zurückgesetzt. 11 - Warnings? -------------- Dies ist eine zusätzliche Option für den Assembler. Warnungen sinq}Äÿ€bREADME DOCbREADME2 DOCb]#KONFIG DOCbE€EDITOR DOCbFÅASSEMBL DOCb| MENU DOCbnMONSHELLDOCbgþBATCHENHDOCbIePLINK DOCb®MEMMAP DOCd "Fehler, die man eigentlich auch vernachlässigen kann". Einige Program- mierer benutzen z.B. gerne "LDA #-1" anstelle r}von "LDA #$FF", um den Akku- mulator mit $FF zu laden. Dies ist besonders bei Editoren angebracht, die den Quelltext Zeics}henweise speichern, um Platz zu sparen. Der Ausdruck "-1" entspricht ja "$FFFF". Dies ergibt aber einen "Operant}d too big"-Fehler, da mein Assembler halt hier einen Fehler erkennt (ein 8-Bit Register wird mit einem 16-Bit Wert geladu}en). Andere Assembler mögen sich ja einen Dreck darum kümmern. Ausserdem wird ein "ZP-boundary" Fehler gemeldet, wennv} man z.B. bei einer "Indirect-Y" Adressier- ung einen größeren Wert als $FF angibt. Bei dieser Adressierungsartw} sollte der Programmiere eigentlich wissen, das es hier keine 16-Bit Adresse gibt! Deswegen wird auch hier kein Fehler ax}usgegeben, wenn "Warnings?" abgeschal- tet wird. Bei den Punkten 3 - 11 wird die Einstellung mit geändert. In dery} letzten Zeile wird mit zwischen "Load Prefs", "Save Prefs" und "Quit Prefs" umgeschaltet. Ein Punkt kann z} mit oder ESCape übersprungen werden (Bei Load, Save oder Quit Prefs führt zur Ausführung der Funk{}tion (z.B. Save Prefs) und dann zu einer Rückkehr in den Editor, während man mit ESCape wieder bei Punkt 1 landet). Anmer|}kung zu den folgenden Block-Funktionen: Da kein Platz mehr im Rechnerspeicher war (ein Block kann bis zu 16 K-Bytes groß se}}in), wird er als File abgespeichert. Dieses File heißt "CLIP.BLK". Sollte eine RAMDisk vorhanden sein, wird das File in der~} RAMDisk abgelegt, ansonsten im Hauptverzeichnis auf Laufwerk #1!!! 11. - Block merken ------------------ Der im Editor } markierte Block wird abgespeichert. Der Text wird nicht geändert. 12. - Block einfügen -------------------- Ein vorhe€}r abgespeicherter Block wird an der Cursorposition (Zeile) einge- fügt. Sollte der Speicher nicht ausreichen, gibt es einen }Rüffel! 13. - Block ausschneiden ------------------------ Der markierte Block wird abgespeichert und aus dem Quelltext ent‚}fernt! 14. - Block löschen ------------------- Der markierte Block wird (nur) aus dem Quelltext gelöscht. 15. - Quelltexƒ}t reparieren / retten (Old-Funktion) -------------------------------------------------- Diese Funktion kann nach dem versehe„}ntlichem Löschen eines Quelltextes bzw. nach dem Booten aufgerufen werden, um einen noch im Speicher stehenden Quelltext…} zurückzuholen. Diese Funktion wirkt nur auf die aktuelle (ange- wählte) Page und muß ggf. auf mehrere Seiten angewendet w†}erden! 16. - Quelltext löschen ----------------------- Der Quelltext in der aktuellen Seite wird gelöscht! Wird diese ‡}Funktion mit gedrückter SHIFT-Taste aufgerufen, so werden ALLE Seiten gelöscht und die Page 1 angewählt! Allgemeine Anmeˆ}rkungen: ======================= - Bei der PARENT-Funktion des Fileselektors kann es bei einem größeren Pfad passieren, da‰}ß in der Menüleiste Grafik-Schrott angezeigt wird. Dieses Verhalten hat aber keinen Einfluss auf die Funktionen; beim ernŠ}euten Aufruf der Menüleiste erscheint die Grafik wieder normal. Dieser Fehler läßt sich auch nur beseitigen, wenn für den G‹}rafikpuffer ein eigener Speicherbereich reserviert würde, was aber nicht vorgesehen ist. Zur Zeit teilt sich der GrafikpufŒ}fer den Speicher mit anderen Puffern, z.B. Filenamen usw. - Der Sprung ins DUP-Menü muß mit "Y" bestätigt werden, da ein}e Rückkehr vom DUP-Menü zum Assembler nicht vorgesehen ist (vom MyDOS). Nun, Backadr. zum Assembler ist $2800 - für alle Ž}MEM.SAV-fetischisten. Ein Sprung ins DUP-Menü ist eigentlich auch nicht nötig (ausser zum kopieren, und da wird MEM.SAV so}- wieso ungültig), da fast alle dort vorhandenen Funktionen auch mit dem XIO Kommando im Monitor durchgeführt werden können. } Die Monitor Shell V2.1 ====================== Bei der Entwic‘}klung des Monitors für diese Version des Assemblers mußte ich einen neuen Weg gehen. Da der zur Verfügung stehende Spe’}icherplatz für den Monitor nur 2 k-Bytes "groß" ist, war es mir nicht möglich, einen komfortablen und speicherresidenten Mon“}itor zu programmieren. Daher besteht der eigentliche Monitor nur aus der "Shell" (Hülle, Umhüllung oder Schale...). Diese S”}hell hat nur 4 residente Kommandos: DIR, BYE, GO und CONT. Alle anderen Befehle sind als sogenannte "Overlay-Kommandomod•}ule" ausgelegt. Das sind kleine Programme, welche beim Aufruf in den Monitor geladen werden. Wird zum Beispiel das Kom- m–}ando "LIST" eingegeben versucht die Shell, die Datei "LIST.OVL" im Verzeichnis OVERLAY in der RAMDisk zu öffnen und einzule—}sen. Sollte es diese Datei nicht geben, gibt die Shell einen "unknown command!"-Fehler aus. Durch diese Technik lassen sic˜}h theoretisch bis zu 64 Kommandos erstellen (in ein Verzeichnis pas- sen ja maximal 64 Dateien). Weiterhin werden die ben™}ötigten Parameter nicht mehr mit dem Kommando übergeben (z.B. "SAVE $4000 $5FFF D1:TEST.COM"), sondern im Dialogbetrieb abš}gefragt. Der Benutzer gibt also "SAVE" ein, und der Com- puter fragt im Dialog nacheinander die Adressbereiche und den Na›}men ab. Dies ist eine recht komfortable Lösung, wie ich meine. Anmerkung: ---------- Ein Kommando wird zuerst auf der œ}RAMDisk gesucht (wenn vorhanden). Sollte es nicht in der RAMDisk stehen, wird es "eventuell" auf der EPROMDisk gesucht }(wenn konfiguriert), und als letztes von Laufwerk #1! Dabei wird zuerst ver- sucht, das Verzeichnis "OVERLAY" in dem ž} jeweiligen Laufwerk anzusprechen. Sollte es nicht vorhanden sein wird versucht, das Kommando aus dem Hauptver- zeichnis dŸ}es jeweiligen Laufwerks zu laden! Zum "eventuell" bei der EPROMDisk: Sollte der Assembler auf der EPROMDisk installier }t sein (wird im Konfi- gurationsprogramm eingestellt) wäre es natürlich Platzverschwendung, wenn man die Overlay-Kommando¡}module zusätzlich in die RAMDisk kopiert. Dann werden also Kommandos zusätzlich auf der EPROMDisk gesucht, sonst (wenn von¢} Disk gebootet wurde) nicht! Die residenten Kommandos der Monitor-Shell: =========================================== - D£}IR (Directory, Inhaltsverzeichnis) Nach Eingabe diese Kommandos erscheint die Meldung "Index of". Drückt man¤} nur , so wird das Inhaltsverzeichnis von "D:*.*" ausgegeben. Dieses ist beim MyDOS das "default"-Verzei¥}chnis, d.H. es kann mit einem CIO-funktionscode ein Verzeichnis als aktuelles Verzeichnis gewählt werden, und au¦}f dieses wird dann mit "D:" (ohne Laufwerksnummer!) zugegriffen, siehe auch "PATH". Beispiel: "PATH D3:DEMOS>XE_ONLY" setzt das aktuelle Verzeichnis. Alle Filenameneingaben mit "D:" ohne Nummer beziehen sich auf dieses Verzeichn¨}is. "LOAD D:PAGEFLIP.COM" würde dann das Programm "PAGE- FLIP.COM" von der Diskette in Laufwerk 3 aus dem Verzeichnis "©}XE_ONLY" laden; dieses liegt im Verzeichnis "DEMOS" und dieses wiederum im Hauptverzeichnis! Nun, man könnte ja auch "Lª}OAD D3:DEMOS>XE_ONLY>PAGEFLIP.COM" einge- ben... Auf die Meldung "Index of" kann ein kompletter Pfadname eing«}egeben werden. Hierbei ist allerdings die Einschränkung zu beachten, das die Eingaben nur 25 Zeichen lang sein können! ¬}- BYE (Verlassen der Monitor-Shell und Rückkehr in den Editor) Mit diesem Kommando kommt man wieder in den Edito­}r zurück. - GO (Starten von Maschinenprogrammen) Nach diesem Kommando muß auf die Meldung "Address:" die A®}dresse eingegeben werden, an der ein Maschinenprogramm gestartet werden soll. Die CPU-Register Accu, X und Y werdem ¯} mit den Systemvariablen AX, XR und YR initialisiert (siehe auch Kommando "REGS"), d.H. es können auch Werte in den Regis°}tern an ein Programm übergeben werden. - CONT (Continue, fortfahren nach Programmunterbrechung) Mit CONT kann±} ein Progamm, welches unterbrochen (nicht beendet!) wurde, fort- gesetzt werden. Nach der Eingabe fragt der Computer nach ²}der Adresse, an der das Programm fortgesetzt werden soll. Im Allgemeinen ist hier nur zu drücken um an der ³}Abbruchstelle fortzufahren. Die Adressabfrage ist nur für Profis interessant, Assemblerneulinge sollten die Finger von di´}eser Mög- lichkeit lassen, da bei unbedachter Anwendung das System abstürzen kann! Beim Unterbrechen wird der Dispµ}layliststatus gesaved und die "normale" Dis- playlist eingeschaltet. Bei CONT wird die alte Displaylist wieder einge- ¶} schaltet,bevor die Programmausführung fortgesetzt wird. Wurde ein Programm beendet (d.H. mit RTS abgeschlossen), so k·}ann natürlich kein CONT ausgeführt werden. In diesem Fall erscheint "Can´t continue"! Ein Programm kann auf zwei ar¸}ten Unterbrochen werden: Mit dem Maschinen- sprachebefehl "BRK" oder, wenn die Interrupts nicht gesperrt wurden, mit ¹} der Tastenkombination "SHIFT/BREAK". Es erfolgt die Meldung "Stopped at ". Wurde das Programm mit einem º}BRK unterbrochen, so wird mit CONT ohne Adressangabe zu der nächsten Anweisung gesprungen (also hinter den BRK- Befehl!)»}, sonst (bei Angabe einer Adresse, oder wenn das Programm mit SHIFT/ BREAK unterbrochen wurde) wird zur Abbruchadresse ges¼}prungen. Mitgelieferte Overlay-Kommandodateien: ====================================== Hier eine Auflistung der mitgeli½}eferten Overlay-Kommandodateien und eine Kurz- beschreibung: Kommando: Beschreibung: ========= ============= P¾}ATH Setzten des "Default" Directorys "D:" (für MyDOS). PATH D8: und DIR D:*.* ergibt den Inhal¿}t von D8: bzw. dem evtl. ange- gebenen Verzeichnis. XIO Ausführen eines beliebigen CIO-KommanÀ}dos. Es wird nach dem Kom- mando, den beiden Steuerbytes AUX1 und AUX2 sowie nach dem Ge- räÁ}te/Filenamen gefragt. Nach einer Sicherheitsabfrage wird das Kommando ausgeführt. REGS Anzeige dÂ}er Register und Statusflags. Alle Register und Flags können geändert werden! LIST Gibt ein ListÃ}ing ab der angegebenen Adresse aus (Disassembler). Wird als Startadresse nur gedrückt, nimmt der ComÄ}puter den aktuellen PC (Program-Counter) als Startadresse. Wird als Endadresse nur ohne weitere Eingabe gedrückt, so gibt der Computer immer 13 Zeilen aus. Auf Tastendruck werden wei- Æ} tere 13 Zeilen ausgegeben, mit ESCape wird abgebrochen. Wenn eine Endadresse eingegeben wurde, soÇ} wird ohne unterbrech- ung vom Anfang bis zum Ende gelistet, mit einem Tastendruck kann È}das Listen unterbrochen werden, nochmaliger Tastendruck (außer ESCape!) läßt das Listing weiterlaufen. É}Der Computer fragt dann noch nach einem Ausgabegerät, wohin das Listing gesendet werden Ê}soll. Es kann ein Gerätename oder ein komplet- ter Dateiname eingegeben werden. Wird nur gedrückt, Ë}so erfolgt natürlich keine externe Ausgabe. SAVE Dieser Befehl speichert einen Speicherbereich alÌ}s Binärfile ab. Der Computer fragt nach Start- und Endadresse. Eine Datei kann auch "adressÍ}versetzt" gespeichert werden. Hierzu ist bei der Frage "Into:" die Zieladresse einzugeben, an die das BinäÎ}rfile später geladen werden soll. Folgt dem Filenamen ein "/A", so wird an das (existierenÏ}de) File angehängt! WRITE Speichert einen Speicherbereich als normale Datei ab, also ohne BinärfilÐ}eheader! Einzugeben ist die Start- und Endadresse sowie der Filename. Folgt dem Filenamen ein "/A", so wird Ñ}an die be- stehende Datei angehängt (Append-Funktion). LOAD Mit diesem Kommando kann ein BinärfiÒ}le geladen werden. Es er- folgt ein "Filetrace", d.H. die Adressbereiche des Files wer- deÓ}n angezeigt. Wird nur der Filename eingegeben, so frangt das Programm nach ob die jeweiligen Init- oderÔ} Autorunvektoren ausgeführt werden sollen. Folgt dem Namen ein "/L", wird nur geladen, d.Õ}H. Init/Autorun wird NICHT ausgeführt! Wenn dem Namen ein "/R" folgt, wird nur der Autorunvektor ausgefühÖ}rt und Init wird ignoriert. Als vorletzte Möglichkeit gibt es "/I", welche alle Initialis×}ierungsaufrufe ausführt, aber den Autorun nicht! Ein "/A" steht hier für "Automatisch", d.H. Init und Au- Ø} torun werden automatisch ausgeführt. Wenn dem Namen keine Op- tion folgt, werden Sie jedesmalÙ} ( wenn ein solcher Init- oder Autorunvektor auftaucht) gefragt, ob er ausgeführt werden soll. Ú} Dies muß mit bestätigt werden! SCAN Durchsucht den angegebenen Speicherbereich nach einer Bytefolge Û} oder einem String. Also Joker kann man beim Suchen nach einer Bytefolge eine $00 eingegebÜ}en werden, beim Suchen nach einem String kann der "Klammeraffe" (SHIFT/8) als Joker verwendet Ý} werden. Beim Suchen nach einem String wird noch gefragt, ob zwischen Klein- und Großbuchstaben untÞ}erschieden werden soll. Wird diese Funktion nicht gewünscht, muß hier mit "N" geant- worteß}t werden! Ist diese Funktion aktiv, findet sie auch Bild- schirmcode. Als Default für die Startadresse wirdà} der aktuelle PC genommen, für die Endadresse ist der Default $BC00. Ist die Suche abgeschá}lossen, kann in einem anderen Adressbereich weitergesucht werden ohne den Suchstring (bzw. die Bytefolâ}ge) nochmal eingeben zu müssen. EDIT Dies ist ein recht komfortabler Speichereditor. Es kann in ã}Hex editiert werden und in ASCII (oder im internen Bildschirmcode). Der Editor zeigt linksä} die Adressen, in der Mitte jeweils 8 Hexzahlen pro Zeile und rechts die Daten im internen å} Bildschirmcode oder im ASCII-Code an. Oben wird der aktuelle Modus angezeigt ("Int" für "Interneæ}r Bildschirmcode" oder "ASC" für "ASCII-Code". Die Anzeige kann jederzeit mit der Tasten- ç}kombination CONTROL/INVERSE zwischen Int und ASC umgeschaltet werden. Mit der TABulatortaste wechselt man è}zwischen dem "Hex- feld" und dem "Int-" bzw. "ASC-" Feld. Wenn man sich im "Zei- cheneditieé}rmodus" befindet, werden keine inversen Zeichen angezeigt (damit man den Cursor besser sieht). Der Curê}sor wird mit den Cursortasten (mit CONTROL) gesteuert. Mit SHIFT-CON- TROL-CursorUp/Down ë}kann um jeweils $80 Bytes gescrollt werden. Wird im Hexfeld gedrückt, wandert der Cursor ein Byte ì} weiter (entspricht "Cursor-Right"), während im ASC/Int Mode der Cursor in die nächste Zeile beí}wegt wird. Achtung: Eingegeben- er Text wird gemäß des eingestellten Modes im internen oder im î} ASCII Code in den Speicher geschrieben! Wird keine Taste gedrückt bzw. keine Eingabe getätigt, so ï} erfolgt automatisch ca. 5 mal in der Sekunde ein Refresh des Bildschirms, d.H. der Bildsð}chirminhalt (Hexwerte und Zeichen- codes) werden neu aufgebaut. Somit werden auch interrupt- ñ} bedingte Änderungen in den Speicherstellen sofort sichtbar. Ansonsten erfolgt ein Neuaufbau des Sò}creens bei jedem Tasten- druck. READ Dieses Kommando dient zum Einlesen von Daten (nicht-Binärfiló}es) an eine beliebige Adresse. Es kann die Adresse sowie die maxi- male Länge angegeben werdô}en. FILL Füllt einen Speicherbereich mit dem angegebenen Byte. Wird als "Fillbyte" nur õ} gedrückt, so wird mit 0 gefüllt. Wird eine Wert größer als 255 eingegeben (also ein WORT (16 Bit)), ö} so wird in Wortgröße gefüllt! MOVE Dient zum verschieben (kopieren) eines Speicherbereiches in ei- ÷} nen Anderen. Quell- und Zieladresse dürfen sich natürlich dabei überschneiden. INFO ø}Gibt eine Aufstellung der momentan verfügbaren Kommandos und wartet auf die Eingabe einer Kommandobezeù}ichnung. Wird nur gedrückt so wird eine Kurzerläuterung zu den resident- en Kommandú}os ausgegeben, ansonsten wird ein Hilfstext zum ange- gebenen Modul angezeigt. Anmerkung: INFû}O gibt nur die Kommandos aus, die in dem gleichen Verzeichnis stehen wie das INFO-Kommando selbst! CALC ü} Zeigt das Ergebnis des eingegebenen Wertes (bzw. der eingege- benen Formel) hexadezimal, binär und ý}dezimal an. das Ergebnis des eingegebenen Wertes (bzw. der eingege- benen Formel) hexadezimal, binär und  Batchfile Enhancement V1.7 =========================== ÿ} Copyright (c) 1991 by Torsten Karwoth ------------------------------------- } Geschrieben für MyDOS, getestet mit Version 4.50 Was ist das "Batchfile enhancement"? Nun, ganz einfach: Eine art }"Interpre- ter" für sogenannte Batch-files. PC`s und andere Rechnern können beim System- start eine Textdatei "ausführen", }in welcher verschiedene Kommandos stehen. So werden z.B. deutsche Tastaturtreiber geladen usw.! Nichts anderes ist das} Batchfile enhancement - grob gesagt. Das MyDOS ist ja schön und gut, aber man vermißt doch schon eine Funktion mit der di}e RAMDisk initialisiert werden kann oder ein Menü dargestellt werden kann. Das BFE (so nenne ich es mal in Zukunft) wird a}ls AUTORUN.SYS auf eine MyDOS- Diskette kopiert. Es belegt den Speicher von $8000 bis $9FFF. Es sucht als erstes eine Te}xtdatei "D:AUTOEXEC.BAT" und führt die dort enthalteten Kommandos aus. So kann mit COPY eine Datei in die RAMDISK oder mit XC}OPY sogar ein ganzes Verzeichnis kopiert werden, ein Menü angezeigt werden, Dateien geschützt werden usw. Befehle können auc}h bedingt ausgeführt werden. Ein Direktmodus ist eben- falls vorhanden und alle ROMDisk-benutzer können auch aufatmen! Nun  } zu den einzelnen Befehlen mit den Parametern. Filenamen werden, außer bei RENAME, mit einem Leerzeichen getrennt. Z.B. "C }OPY D1:README.TXT D8:READ.ME", aber "RENAME D1:alter Name,neuer Name"! Die RAMDisk kann im Batchfile mit RD: angesprochen  }werden. Ausserdem gibt es eine Variable (%), bei "D%:*.TXT" wird dann die dem %-Zeichen zugewiesene Laufwerksnummer ein }gesetzt. IF - ENDIF Strukturen sollten der Lesbarkeit halber immer eingerückt werden. Sollte kein AUTOEXEC.BAT auf der  }Disk sein, oder wurde es ausgeführt, kommt man in den Direktmodus. Beim starten eines Batchfiles befindet sich das Syste}m immer im "ECHO ON"-Modus, d.H. die gerade ausgeführten Befehle werden angezeigt. Siehe auch ECHO ... Auch Basicprogramme }können gestartet werden. Alle in Klammern angegebenen Texte usw. sind optional, d.H. nicht zwingend erforderlich. Sie} haben nur eine bestimmte Funktion. Es wird nur das erste Zeichen erkannt! "U", "Update" oder "Unparteiisch" sind gleich!} - EXEC Mit EXEC kann eine andere Batch-datei ausgeführt werden. Ein GOSUB ist nicht möglich. Bei EXEC wird a}utomatisch ein ECHO ON ausgeführt. - ECHO ON Aktiviert die List-Funktion. Alle Befehle des Batchfiles werden bei ihrer} Ausführung angezeigt. - ECHO OFF Schaltet die Anzeige der Befehle ab! (Nur in einem Batchfile sinnvoll). - ECHO (Text)} Der angegebene Text wird ausgegeben (mit allen Leerzeichen). - MAKEDIR Erzeugt ein neues Verzeichnis. Beisp}iel: MAKEDIR RD:SUBDIR MAKEDIR RD:SUBDIR>NOCHEINS - ASK FOR Wartet, bis eine der angegebenen }Tasten gedrückt wird (oder ESCape). ECHO Ja oder Nein? ASK FOR JN - IF EXIST Überprüft das} Vorhandensein einer Datei und führt die nachfolgenden Befehle bedingt aus (bis zum ENDIF) wenn die Bedingung erfüllt war.} - IF NOT EXIST Beispiel: IF NOT EXIST D1:DUP.SYS ECHO Kann nicht ins DOS, keins da! STOP } ELSE EXIT ENDIF - IF ANSWER = Führt die nachfolgenden Befehle bedingt aus, }wenn in einer vorangegangenen ASK FOR-Anweisung diese Taste gedückt wurde. Beispiel: ASK FOR JN IF ANSWER = J DELETE D1:*.TXT ELSE ECHO Nichts wurde gelöscht! ENDIF - IF RAMDISK (-) IF } RAMDISK prüft auf das vorhandensein einer RAMDisk! Ohne die Option "-" wird auch ein Hardwartest (130XE-kompatibel) du}rchgeführt, d.H. sollte zwar im DOS eine RAMDisk konfiguriert sein, muß sie hardwaremäßig auch da sein! IF RAMDISK - }prüft nur, ob die RD konfiguriert ist. Dies ist für nicht-130XE RAMDisks. Ist eine RD da werden die nachfolgenden Befehle }bedingt ausgeführt. - IF NOT RAMDISK (-) Beispiel: IF NOT RAMDISK ECHO Keine RAMDisk vorhanden! S }TOP ENDIF - ENDIF Beendet eine bedingte Ausführung. IF-ENDIF Konstruktionen können übrigens 8-fach!} verschachtelt werden! - ELSE Kehrt die Bedingung auf dem Stapel um (wenn möglich). Zwei mal ELSE ergibt wieder den ""}Normalzustand". Beispiel: ASK FOR AB IF ANSWER = A ECHO Sie haben die Taste A gedrückt! ELSE ECHO Sie drückten #}auf die Taste B! ELSE ; Nur als Beispiel (eigentlich unsinn) ECHO Wieso nicht B? ; J$}etzt wieder Bedingung für "A"! ENDIF Wenn die Taste A gedrückt wird, erscheint der Text "Sie haben die Taste A ged%}rückt!" und "Wieso nicht B?"! - LOAD (Chan) (Q/L/I/R) Mit Load wird das angegebene Binärfile geladen. Die Opti&}onen sind: Q(uit) - Wird ein File geladen und mit RTS beendet, wird nicht zum BFE zurückgesprungen sond'}ern in das DUP.SYS (oder ins BASIC). Das File wird geladen und alle Init/Autorun-Vektoren ausgeführt! L(oad) (}- Das File wird nur geladen, weder INIT noch RUN werden ausgeführt! R(un) - Das File wird geladen und der Autorun ausge)}führt, Init NICHT! I(nit) - Alle Initialisierungsaufrufe werden ausgeführt, Autorun NICHT! Mit (Chan) kann optionel*}l ein Kanal gewählt werden, über den die LOAD- Funktion ausgeführt werden soll. Werte von 0 bis 7 sind möglich, Ka+}nal 0 wird allerdings vom Editor benötigt! (Chan> muß vor der Option stehen (wenn benutzt)! Dies ist z.B. nötig we,}nn Programme geladen werden sollen, welche das Laden "mittendrin" selbst übernehmen. Dies ist z.B. bei Turbo-BASIC, dem C-}ompiler und dem Runtime-Modul der Fall. Diese setzten vorraus, daß das Programm von Kanal 1 geladen wird. Im Batchfil.}e-Enhancer werden Kanal 5,6 und 7 benutzt, bei XCOPY auch Kanal 4! Beispiel: LOAD D1:TURBOBAS.COM 1 Quit - COPY /} () Dient zum Kopieren eines einzelnen Files. Dateiangaben im MyDOS-üblichen Format. Siehe auch TYPE. Fehlt wird automatisch der Editor genommen! - SETDIR Damit kann das "Defaultverzeichnis" von MyDOS angesprochen w1}erden. Beispiel: SETDIR RD:TEXTE>PRIVAT TYPE D:ELKE.TXT P: entspricht in etwa TYPE RD:TEXTE>PRIVA2}T>ELKE.TXT P: ! Nach SETDIR kann mit D: auf das Verzeichnis zugegriffen werden. - FORMAT DISK Dient3} zum formatieren einer Diskette. Achtung: Es findet keine Sicherheits- abfrage statt! Beispiel: FORMAT DISK D2: 4} - TYPE () Wurde nur aus optischen Gründen implementiert und sollte zum Anzeigen von Texten usw. benutzt w5}erden. Siehe auch COPY. - GOTO